///////////////////////////////////////////////////////////////////////////////
// File:        SqlResultSet.hpp
// Author:      671643387@qq.com
// Description: 
///////////////////////////////////////////////////////////////////////////////

#if !defined(SHARED_DATABASE_SQLRESULTSET_HPP_)
#define SHARED_DATABASE_SQLRESULTSET_HPP_

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif

#include <cstddef>
#include <boost/shared_ptr.hpp>

///////////////////////////////////////////////////////////////////////////////
class SqlField;

///////////////////////////////////////////////////////////////////////////////
class SqlResultSet
{
public:
    SqlResultSet(void);
    virtual ~SqlResultSet(void);

public:
    ///////////////////////////////////////////////////////////////////////////
    virtual bool NextRow(void) = 0;
    virtual void Close(void) = 0;

    ///////////////////////////////////////////////////////////////////////////
    SqlField* operator[](unsigned int idx);
    SqlField* GetField(unsigned int idx);
    unsigned int GetFieldCount(void);

protected:
    ///////////////////////////////////////////////////////////////////////////
    SqlField*       row_;
    unsigned int    nfield_;
};

typedef boost::shared_ptr<SqlResultSet> SqlResultSetPtr;

#endif //SHARED_DATABASE_SQLRESULTSET_HPP_
